package com.lanqiao.service.impl;

import com.github.pagehelper.PageHelper;
import com.lanqiao.domain.District;
import com.lanqiao.domain.House;
import com.lanqiao.domain.Street;
import com.lanqiao.mapper.HouseMapper;
import com.lanqiao.service.IHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 张建平 on 2020/8/12.
 */
@Service("houseService")
public class HouseServiceImpl implements IHouseService {

    @Autowired
    HouseMapper houseMapper;

    @Override
    public List<House> find(House condition, int pageNum, int pageSize) {
        /*
        直接调用pagehelper库中类进行分页
        PageHelper.startPage(页号, 页面大小);

        startPage()只对紧跟后面的查询进行分页，如果有在一个业务方法内同时进行多次查询，而后面的查询也要分页则
        可以这样写：
        try{
            PageHelper.startPage(pageNum, pageSize);
            List list = employeeMapper.selectList(employee);
        }finally{
            // 清理前一次查询的分页状态
            PageHelper.clearPage();
        }

        PageHelper.startPage(pageNum, pageSize);
        List list2 = otherMapper.selectList(); //其它的分页查询
        */

        // 推荐这2种使用方式。pagehelp插件会自动加上分页SQL的外面两层的嵌套
        PageHelper.startPage(pageNum, pageSize);
        // PageHelper.offsetPage(pageNum, pageNum); //offsetPage()方法也可以

        return this.houseMapper.select(condition, pageNum, pageSize);
    }

    @Override
    public List<District> loadDistrict() {
        return houseMapper.selectDistrict();
    }

    /**
     * 查询指定区县的街道
     *
     * @param id
     * @return
     */
    @Override
    public List<Street> loadStreet(Integer id) {
        return this.houseMapper.selectStreet(id);
    }

    /**
     * 查看房屋详细信息
     *
     * @param id
     * @return
     */
    @Override
    public House findById(Integer id) {
        return this.houseMapper.selectById(id);
    }

    /**
     * 添加
     *
     * @param house
     */
    @Override
    public void save(House house) {
        this.houseMapper.insert(house);
    }
}
